//
//  WBUserAccount.swift
//  SainMicroblog
//
//  Created by chenxinju on 16/5/4.
//  Copyright © 2016年 chenxinju-a2. All rights reserved.
//

import UIKit

class WBUserAccount: NSObject {

    
    //用户的唯一验证登录的依据
    var access_token: String?
    
    //access_token 的生命周期 单位是秒数
    //当外界给expires_in赋值的会调用didSet方法
    
    var expires_in: NSTimeInterval = 0 {
    
        didSet {
         expires_date = NSDate(timeIntervalSinceNow: expires_in)
          
        }
    
    }
    
    //定义一个时间属性
    var expires_date: NSDate?
    
 /// 用户授权的UID 方便开发者 减少一次user/show接口调用而返回的,第三方应用不能用此字段作为用户的登录的状态的识别
    var uid: String?
    
    //用户的昵称
    var screen_name: String?
    
    //用户的头像地址
    var profile_image_url: String?
    
    init(dic:[String: AnyObject]) {
        
        //调用父类做的事情
        super.init()
        
        //KVC模式键值编码赋值
        setValuesForKeysWithDictionary(dic)
    }
    
    
    //防止崩溃 键值不对应 需要实现下面方法
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
    }
    
    //归档
    func encodeWithCoder(aCoder: NSCoder) {
     aCoder.encodeObject(access_token, forKey: "access_token")
     aCoder.encodeObject(expires_date, forKey: "expires_date")
     aCoder.encodeObject(uid, forKey: "uid")
     aCoder.encodeObject(screen_name, forKey: "screen_name")
     aCoder.encodeObject(profile_image_url, forKey: "profile_image_url")
    }
    
    
    //解档 把沙盒数据读取出来 把二进制数据转换为对象
    required init?(coder aDeCoder:NSCoder) {
    
      self.access_token = aDeCoder.decodeObjectForKey("access_token") as? String
    let ex = aDeCoder.decodeObjectForKey("expires_date") as? NSDate
      //可选类型和非可选类型不是一个类型
     self.expires_date = ex //(aDecoder.decodeObjectForKey("expires_in") as? NSTimeInterval)!
        
        //注意记得super init
        super.init()
    }
    
    

    
    //创建一个获取沙盒路径的方法
    class  func readUserAccount() ->WBUserAccount? {
        
        //进行归档
        //1.获取沙盒路径
        let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).last!
        
       // printLog(path)
        
        //2.拼接文件的路径
        let filePath = (path as NSString).stringByAppendingPathComponent("info.cxj")
        //解档
        let count = NSKeyedUnarchiver.unarchiveObjectWithFile(filePath)as? WBUserAccount
        
        //读取到用户数据之后 进行和现在的时间进行判断 如果在有效期内 就不在进行请求
        if let date = count?.expires_date {
          //让这个时间和现在的时间进行比较 
//           升序 和 降序
            //print(date)
            if date.compare(NSDate()) == NSComparisonResult.OrderedDescending{
                
                return count
    
            }else {
              return nil
        
          }
            
        }
        
         return nil
       }


}
